home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_ATxgopher.idb / usr / freeware / src / xgopher.1.3 / sc_text.c.z / sc_text.c
C/C++ Source or Header  |  1998-01-21  |  3KB  |  146 lines

  1. /* sc_text.c
  2.    gopher item subclass procedures for text */
  3.  
  4.      /*---------------------------------------------------------------*/
  5.      /* Xgopher        version 1.3     08 April 1993                  */
  6.      /*                version 1.2     20 November 1992               */
  7.      /*                version 1.1     20 April 1992                  */
  8.      /*                version 1.0     04 March 1992                  */
  9.      /* X window system client for the University of Minnesota        */
  10.      /*                                Internet Gopher System.        */
  11.      /* Allan Tuchman, University of Illinois at Urbana-Champaign     */
  12.      /*                Computing and Communications Services Office   */
  13.      /* Copyright 1992, 1993 by                                       */
  14.      /*           the Board of Trustees of the University of Illinois */
  15.      /* Permission is granted to freely copy and redistribute this    */
  16.      /* software with the copyright notice intact.                    */
  17.      /*---------------------------------------------------------------*/
  18.  
  19. #include "conf.h"
  20. #include "osdep.h"
  21. #include "globals.h"
  22. #include "gopher.h"
  23. #include "util.h"
  24. #include "status.h"
  25. #include "appres.h"
  26. #include "text.h"
  27. #include "sc_text.h"
  28. #include "sc_textP.h"
  29.  
  30.  
  31.  
  32. /* getFile
  33.    access the Ascii text file as required by the selected item */
  34.  
  35. static BOOLEAN
  36. getFile(gi, indexString)
  37. gopherItemP    gi;
  38. char        *indexString;
  39. {
  40.     char        errorString[MESSAGE_STRING_LEN];
  41.     char        tempName[PATH_NAME_LEN];
  42.     int        tempFD;
  43.     BOOLEAN        okSoFar;
  44.     
  45.     getTempFile(tempName);
  46.     if ((tempFD = open(tempName, O_WRONLY | O_CREAT, TMP_FILE_MODE)) < 0) {
  47.         perror("getFile");
  48.         sprintf(errorString,
  49.             "Cannot open the temporary file %s", tempName);
  50.         showError(errorString);
  51.         fprintf (stderr, "%s\n", errorString);
  52.         return FALSE;
  53.     }
  54.  
  55.  
  56.     okSoFar = GI_copyFromNet(tempFD, gi, "Getting text for display");
  57.  
  58.     close(tempFD);
  59.  
  60.     /* check for cancel */
  61.  
  62.     if (! okSoFar ) {
  63.         unlink(tempName);
  64.         return FALSE;
  65.     }
  66.  
  67.  
  68.     showFile(gi, USER_STRING(gi), tempName, indexString);
  69.  
  70.     return TRUE;
  71.  
  72. }
  73.  
  74.  
  75. /* GIText_init
  76.    initialize text file class - host access list and prefix. */
  77.  
  78. void
  79. GIText_init()
  80. {
  81.     GU_makePrefix(prefixText,  appResources->prefixFile);
  82.     textHostList = GU_createAccessList(appResources->textServers);
  83.     GU_registerNewType(A_FILE, &textSubclass);
  84.  
  85.     return;
  86. }
  87.  
  88.  
  89. /* GIText_done
  90.    done with text file class - get rid of leftover temp files. */
  91.  
  92. void
  93. GIText_done()
  94. {
  95.     cleanUpTextProc();
  96.  
  97.     return;
  98. }
  99.  
  100.  
  101. /* GIText_init
  102.    restarts text file class - remove popups and get rid of temp files. */
  103.  
  104. void
  105. GIText_restart()
  106. {
  107.     removeAllText();
  108.     cleanUpTextProc();
  109.  
  110.     return;
  111. }
  112.  
  113.  
  114. /* GIText_access
  115.    check the accessability of a text file selection */
  116.  
  117. BOOLEAN
  118. GIText_access(gi)
  119. gopherItemP    gi;
  120. {
  121.     BOOLEAN    result;
  122.  
  123.     if (textHostList == NULL  ||  GU_checkAccess(gi->host, textHostList)) {
  124.         result = TRUE;
  125.     }else {
  126.         result = FALSE;
  127.     }
  128.  
  129.     return result;
  130. }
  131.  
  132.  
  133. /* GIText_process
  134.    process a text file selection */
  135.  
  136. BOOLEAN
  137. GIText_process(gi)
  138. gopherItemP    gi;
  139. {
  140.     BOOLEAN    result;
  141.  
  142.     result = getFile(gi, getCurrentDirIndex());
  143.  
  144.     return result;
  145. }
  146.